import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

// var store = new Vuex.Store()  //创建了一个store对象(根实例)
export default new Vuex.Store({
    // state管理数据(状态)
	state(){
		return {
			a: 1,
			b: 2,
		}
	},
	getters: {
		// 键名:计算属性名
		// 键值:a. 是一个函数  => 可以根据函数的返回值得到一个新值
		// 

		// getters 相当于是vuex中计算属性 -> 可以根据 state中的数据得到一个新值,并缓存结果, 当依赖的state数据发生改变,重新结算缓存新的结果
		doubleA: function (state) {
			return state.a * 2;
		},
		tripleA: function (state) {
			return state.a * 3;
		},
		doubleB: function (state) {
			return state.b * 2;
		},
		tripleB: function (state) {
			return state.b * 3;
		},
		// Getter 也可以接受其他 getters 作为第二个参数：
		doubleBoth: function (state, getters) {
			return getters.doubleA + getters.doubleB;
		},
		// 是一个函数  => 可以根据函数的返回值得到一个新值 (还是一个函数) => 可以被调用(接收参数)
		// bothN:function(state){
		// 	return function(n){
		// 		return (state.a+state.b)*n;
		// 	};
		// },
		bothN: state => n => (state.a + state.b) * n,
	}
})
	

